package tests;

import static org.junit.Assert.*;


import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import packageServer.*;

public class TestMappa {
	
	final int LUNGH=40;
	
	
	private Mappa scenario;
	private Dinosauro d;

	
	@Before
	public  void setUp() throws Exception {
		scenario=new Mappa("casuale");
		d = new Carnivoro(1);
	}

	@After
	public void tearDown() throws Exception {
		scenario=null;
		d=null;
	}

	@Test
	public void testMappa() {
		assertNotNull(scenario);
		try{
		scenario.getCella(50,50);
		fail();
		}catch(Exception e){
			//fuori dai bordi
		}
	}
	

	@Test
	public void testAddDino() {
		scenario.addDino(d, 5, 5);
		assertNotNull(scenario.getDino(5, 5));
		try{
			scenario.addDino(d, 50, 50);			
			fail();
			}catch(Exception e){
				//fuori dai bordi
			}
		
	}

	
	@Test
	public void testIncrementaTurnoDelMondo() {
		int i, j;
		for( i=0;i<LUNGH;i++){
			for(j=0;j<LUNGH;j++){
				assertNotNull(scenario.getCella(i, j));
			if(scenario.getCella(i, j).getTipo().equals("v")){
				((Vegetazione) scenario.getCella(i, j)).incrementaEnergia();			
				assertTrue(((Vegetazione)scenario.getCella(i,j)).getEnergia()>0);
			}
			if(scenario.getCella(i, j).getTipo().equals("c")){
				((Carogna)scenario.getCella(i, j)).decrementaEnergia();
				assertFalse(((Carogna)scenario.getCella(i,j)).getEnergia()<0);
			}	
			}	
		}
	}
}